import axios from 'axios';
import type { AxiosResponse } from 'axios'
import { notification } from 'antd';
export const BASE_URL = 'http://127.0.0.1:3007';
// export const BASE_URL = import.meta.env.VITE_BASE_URL// url = base url + request url
const service = axios.create({
  baseURL: BASE_URL,
  timeout: 10 * 1000,
  // withCredentials:true
});
const errorHandle = (status: number, info: string): void => {
  switch (status) {
    case 400:
      console.log('服务器收到客户端通过PUT或者POST请求提交的表示，表示的格式正确，但服务器不懂它什么意思');
      break;
    case 401:
      console.log('客户端试图对一个受保护的资源进行操作，却又没有提供正确的认证证书');
      break;
    case 403:
      console.log('客户端请求的结构正确，但是服务器不想处理它');
      break;
    case 404:
      console.log('资源被围定义(网络请求地址错误)');
      break;
    case 500:
      console.log('执行请求处理代码时遇到了异常，它们就发送此响应代码');
      break;
    case 503:
      console.log('最可能的原因是资源不足：服务器突然收到太多请求，以至于无法全部处理');
      break;
    default:
      console.log(info);
      break;
  }
};
// 请求拦截
service.interceptors.request.use(
  (config: any) => {
    const token = '';
    if (token) {
      config.headers.Authorization = 'Bearer ' + token;
    }
    return config;
  },
  (error: any) => {
    return Promise.reject(error);
  }
);

// 响应拦截
service.interceptors.response.use(
  (response) => {
    const res = response.data;
    if (res.code !== 1) {
      notification.warning({
        message: res.msg || 'Error',
      });
    }
    // 50001: token错误; 50002: Token过期;
    // if (res.code === 50001 || res.code === 50002) {
    // }
    return res;
  },
  (error: any) => {
    const { response } = error;
    // ElMessage({
    //   message: response.statusText || 'error',
    //   type: 'error',
    //   duration: 5 * 1000,
    // });
    if (response) {
      //打印错误信息以状态码
      errorHandle(response.status, response.data);
      // 401一般是未携带token或者失效
      if (response.status === 401) {
      }
      return Promise.reject(response);
    } else {
      console.log('请求被中断');
    }
  }
);

export default service;
